﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using UOL.PagSeguro.TestServer.Properties;
using System.IO;
using System.Collections.Specialized;
using System.Globalization;

namespace UOL.PagSeguro.TestServer.UI {
    public partial class DetalhesVendaForm : Form {

        private IPagSeguroServer _server;
        private LinhaTabelaVendas _linhaVenda;

        public IPagSeguroServer Server {
            get { return _server; }
            set { _server = value; }
        }

        public LinhaTabelaVendas LinhaVenda {
            get {
                return this._linhaVenda;
            }

            set {
                this._linhaVenda = value;
                this.UpdateForm();
            }
        }

        public DetalhesVendaForm(IPagSeguroServer server) {
            this._server = server;
            InitializeComponent();
        }

        private void UpdateForm() {
            this.Text = string.Format("Venda: #{0}", this._linhaVenda.CodigoTransacao);
            this.txtIdTransacao.Text = this._linhaVenda.CodigoTransacao;
            this.datDataTransacao.Value = this._linhaVenda.DataProcessamento;
            this.txtEmailVendedor.Text = this._linhaVenda.Venda.EmailCobranca;
            this.txtCodigoReferencia.Text = this._linhaVenda.Venda.CodigoReferencia;
            this.txtExtras.Text = this._linhaVenda.Venda.Extras.ToString("0.00", CultureInfo.GetCultureInfo("pt-BR"));
            this.txtValorFrete.Text = this._linhaVenda.ValorFrete.ToString("0.00", CultureInfo.GetCultureInfo("pt-BR"));
            this.cboTipoFrete.SelectedIndex = (int)this._linhaVenda.TipoFrete;
            this.cboTipoPagamento.SelectedIndex = (int)this._linhaVenda.TipoPagamento;
            this.spnParcelas.Value = (int)this._linhaVenda.Parcelas;
            this.cboStatusTransacao.SelectedIndex = (int)this._linhaVenda.Status;
            this.txtAnotacao.Text = this._linhaVenda.Anotacao;

            this.txtCliBairro.Text = this._linhaVenda.Venda.Cliente.Bairro;
            this.txtCliCep.Text = this._linhaVenda.Venda.Cliente.Cep;
            this.txtCliCidade.Text = this._linhaVenda.Venda.Cliente.Cidade;
            this.txtCliComplemento.Text = this._linhaVenda.Venda.Cliente.ComplementoEndereco;
            this.txtCliEmail.Text = this._linhaVenda.Venda.Cliente.Email;
            this.txtCliEndereco.Text = this._linhaVenda.Venda.Cliente.Endereco;
            this.txtCliNome.Text = this._linhaVenda.Venda.Cliente.Nome;
            this.txtCliNumero.Text = this._linhaVenda.Venda.Cliente.Numero;
            this.txtCliDDD.Text =  Convert.ToString(this._linhaVenda.Venda.Cliente.DDD);
            this.txtCliTelefone.Text = Convert.ToString(this._linhaVenda.Venda.Cliente.Telefone);
            this.txtCliUF.Text = this._linhaVenda.Venda.Cliente.Uf;

            this.produtoBindingSource.DataSource = this._linhaVenda.Venda.Produtos;
            this.dataGridView1.AutoResizeColumns();
        }

        private void btnAlterarStatusVenda_Click(object sender, EventArgs e) {
            //Atualizando os valores da linha
            this._linhaVenda.TipoFrete = (TipoFreteRetorno)this.cboTipoFrete.SelectedIndex;
            this._linhaVenda.TipoPagamento = (TipoPagamento)this.cboTipoPagamento.SelectedIndex;
            this._linhaVenda.Parcelas = (int)this.spnParcelas.Value;
            this._linhaVenda.Status = (StatusTransacao)this.cboStatusTransacao.SelectedIndex;
            this._linhaVenda.Anotacao = this.txtAnotacao.Text;
            this._server.ProcessarRetornoAutomatico(this._linhaVenda.ToString());
            this.Close();
        }

        private void DetalhesVendaForm_KeyDown(object sender, KeyEventArgs e) {
            if (e.KeyCode == Keys.Escape) {
                this.Close();
            }
        }

        private void btnCancel_Click(object sender, EventArgs e) {
            this.Close();
        }
    }
}
